package ar.com.aterrizar.asientos;

import org.uqbar.commons.model.Entity;

import uqbar.arena.persistence.annotations.PersistentClass;
import uqbar.arena.persistence.annotations.PersistentField;
import uqbar.arena.persistence.annotations.Relation;

import ar.com.aterrizar.aerolineas.AeroLanchita;
import ar.com.aterrizar.aerolineas.Aerolinea;
import ar.com.aterrizar.entidades.Cliente;
import ar.com.aterrizar.entidades.TipoDeClaseAsiento;
import ar.com.aterrizar.entidades.TipoDeUbicacionAsiento;
import ar.com.aterrizar.fecha.Fecha;
import ar.com.aterrizar.operaciones.Reserva;

@PersistentClass
public abstract class Asiento extends Entity{

	public abstract Boolean estaReservado(Cliente cliente);
	
	public abstract Boolean estaComprado();
	
	@PersistentField
	public abstract Fecha getFechaDeSalidaYHora();
	
	@PersistentField
	public abstract Fecha getFechaDeLlegadaYHora();
	
	@PersistentField
	public abstract String getOrigen();
	
	@PersistentField
	public abstract String getDestino();
	
	@PersistentField
	public abstract TipoDeClaseAsiento getClase();
	
	@PersistentField
	public abstract TipoDeUbicacionAsiento getUbicacion();
	
	public abstract Float getPrecio(Cliente cliente);
	
	@PersistentField
	public abstract String getCodVuelo();
	
	public abstract void setReserva(Reserva reserva);
	
	public abstract Reserva getReserva();
	
	
	public abstract Boolean getDisponibilidad();
	
	@PersistentField
	public abstract Aerolinea getAerolinea();
	
	@PersistentField
	public abstract String getAerolineaNombre();
	
	@PersistentField
	public abstract Integer getNumAsiento();
	
	@PersistentField
	public abstract long getTiempoDeVuelo();
	
	@PersistentField
	public abstract String getCodigoDeAsiento();
	
	public abstract Cliente getClienteQueReservo();
	
	@PersistentField
	public abstract String getFechaDeSalida();

	public abstract Boolean estaReservado();
	
	
	//GETTERS FALTANTES!
	
	@PersistentField
	public abstract Float getPrecio();
	@PersistentField
	public abstract Fecha getFechaYHoraSalida();
	@PersistentField
	public abstract Fecha getFechaYHoraLlegada(); 
	
	//SETTERS !

	public abstract void setPrecio(float precio);
	public abstract void setClase(TipoDeClaseAsiento clase); 
	public abstract void setUbicacion(TipoDeUbicacionAsiento ubicacion);  
	public abstract void setDisponibilidad(boolean disponibilidad);
	public abstract void setOrigen(String origen);
	public abstract void setDestino(String destino);
	public abstract void setFechaYHoraSalida(Fecha fecha); 
	public abstract void setFechaYHoraLlegada(Fecha fecha); 
	public abstract void setAerolinea(Aerolinea aerolinea);
	public abstract void setFechaDeSalida(String fecha);
	
}
